
"""
Python内置类属性
__dict__ : 类的属性（包含一个字典，由类的数据属性组成）
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块（类的全名是'__main__.className'，如果类位于一个导入模块mymod中，那么className.__module__ 等于 mymod）
__bases__ : 类的所有父类构成元素（包含了一个由所有父类组成的元组）


单下划线、双下划线、头尾双下划线说明：
__foo__: 定义的是特殊方法，一般是系统定义名字 ，类似 __init__() 之类的。
_foo: 以单下划线开头的表示的是 protected 类型的变量，即保护类型只能允许其本身与子类进行访问，不能用于 from module import *
__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
"""
# 类的定义 类中方法的定义
class Person():
    """类似于java的构造方法
     类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self代表类的实例。
     """

    def __init__(self, name, age):
        self.name = name
        self.age = age
        # 指定默认值
        self.address = "China"

    def say(self):
        print("hello every body, my name is " + self.name + ", and I,m " + str(self.age) + "years old . "
              + "and I come from " + self.address)


# 创建实例 调用方法
p1 = Person("wsm", 30)
p1.say()


# 继承
class ChinaPersion(Person):

    # 子类构造函数
    def __init__(self, name, age):
        """ 初始化父类的属性
            调用父类构造方法
        """
        super().__init__(name, age)
